# 提取某种颜色
import cv2 as cv
import numpy as np


# 将某种颜色的对象显示出来
def extract_object_demo():
    capture = cv.VideoCapture("rainbow.gif")
    while True:
        ret, frame = capture.read()
        if ret is False:  # 如果没有获取到视频帧则返回 false
            break
        hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
        # hsv 中 h，s，v 的最小值
        lower_hsv = np.array([170, 43, 46])
        # hsv 中的 h，s，v 最大值
        upper_hsv = np.array([180, 255, 255])
        # 提取指定范围颜色，保留指定范围颜色, 其余置为黑(0)
        mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)  # 用 inRange 函数提取指定颜色范围，这里对 hsv 来处理
        dst = cv.bitwise_and(frame, frame, mask=mask)
        cv.imshow("video", frame)
        cv.imshow("mask", mask)
        cv.imshow("dst", dst)
        c = cv.waitKey(60)
        if c == 27:
            break

extract_object_demo()
